package edu.uoc.tdp.pac3.server;

import java.sql.*;
import java.util.Vector;
// impots locals
import edu.uoc.tdp.pac3.common.Empresa;

/**
 * Classe que gestiona les dades persistents de Empresa
 */
public class GestorDiscEmpresa {

	/** Objecte connexio */
	private Connection connexio;
	/** Objecte gestor connexio disc */
	private GestorConnexioDisc gcd;
		
	public GestorDiscEmpresa(GestorConnexioDisc pGcd){
		gcd = pGcd;
		connexio = pGcd.getConexion();
	}
		
	/**
	 * Metode que obte un array amb totes les empreses de la base de dades
	 * {pre: Les empreses existeixen a la base de dades.
	 * 	Hi ha connexio a la base de dades }
	 * {post: S'ha obtingut un array amb totes les empreses de la base de dades
	 * @throws SQLException - excepcio de la manipulacio de la base de dades
	 * @throws Exception - excepcio general
	 */
	public Vector<Empresa> obtenirEmpreses() throws SQLException, Exception{

		Empresa empresa = null;
		Vector<Empresa> v = null;
			
		Statement sentencia = gcd.crearSentencia(); //Crea la sentencia
		connexio.setAutoCommit(false);
		String consulta =("SELECT cif_empresa, nom, tipus_empresa FROM empresa_externa");
			
		ResultSet rs = sentencia.executeQuery(consulta);
		if (rs != null){
			v = new Vector<Empresa>();
			while (rs.next()){
				String cifEmpresa = rs.getString(1);
				String nom = rs.getString(2);
				String tipusEmpresa = rs.getString(3);
				
				empresa = new Empresa(cifEmpresa, nom, tipusEmpresa);
				
				v.add(empresa);
			}
		}
		connexio.commit();
		connexio.setAutoCommit(true);
		sentencia.close();
			
		return v;
			
	}
}
